package com.example.no1admin.mapper;

import com.example.no1admin.pojo.dto.album.AlbumEditDTO;
import com.example.no1admin.pojo.entity.Album;
import com.example.no1admin.pojo.vo.album.AlbumDetailVO;
import com.example.no1admin.pojo.vo.album.AlbumListItemVO;
import org.springframework.stereotype.Repository;

import java.util.List;
@Repository
public interface AlbumMapper {

    /**
     * 插入相册数据
     * @param album 相册数据
     * @return 受影响的行数，成功插入数据时，将返回1
     */
    int insert(Album album);

    /**
     * 根据相册id删除对应的相册数据
     * @param id 相册id
     * @return 受影响的行数，成功删除数据时，将返回1，如果id对应的数据不存在，则返回0
     */
    int deleteById(Long id);

    /**
     * 根据若干个相册id，批量删除相册数据
     * @param ids 期望删除的若干个相册数据的id
     * @return 受影响的行数，将返回成功删除的数据量
     */
    int deleteByIds(Long... ids);

    /**
     * 根据id修改相册数据
     * @param album 相册数据
     * @return 受影响的行数，当修改成功时，将返回1，如果无此id对应的数据，将返回0
     */
    int updateById(Album album);

    /**
     * 根据名称统计此名称对应的相册数据的数量
     * @param name 相册名称
     * @return 此名称对应的相册数据的数量
     */
    int countByName(String name);

    /**
     * 根据相册id查询相册详情
     * @param id 相册id
     * @return 此相册id对应的相册数据
     */
    AlbumDetailVO getById(Long id);

    /**
     * 根据相册name查询相册详情
     * @param name 相册name
     * @return 此相册name对应的相册数据
     */
    AlbumDetailVO getByName(String name);

    /**
     *查询相册列表
     * @return 相册列表的集合
     */
    List<AlbumListItemVO> list();

    /**
     *根据名字查询相册列表
     * @return 相册列表的集合
     */
    List<AlbumListItemVO> listByName(String name);
}
